﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Forms;
using ewal.Data;
using nbb.darbo_grafikas.Properties;

namespace nbb.darbo_grafikas
{
    static class Program
    {
        internal static List<Defektoskopas> Defektoskopai = new List<Defektoskopas>();
        internal static List<Operatorius> Operatoriai = new List<Operatorius>();
        internal static List<Linija> Linijos = new List<Linija>();
        internal static List<Meistrija> Meistrijos = new List<Meistrija>();
        internal static List<Stotis> Stotys = new List<Stotis>();
        internal static List<Darbas> Darbai = new List<Darbas>();
        internal static List<KitasReikalas> KitiReikalai = new List<KitasReikalas>();
        internal static List<Grafikas> Grafikai = new List<Grafikas>();
        internal static List<DateTime> Iseigines = new List<DateTime>();

        internal static DateTime FromDate;
        internal static DateTime ToDate;

        internal static int ScheduleId;
            
        
        internal enum Operation {indefined, kuriamas_naujas, redaguojamas_senas};

        // What I'm doing now
        internal static Operation ImDoingNow = Operation.indefined;

        // darbas I'm are working at
        internal static Darbas CurrentDarbas;

        // last used selections
        internal static Dictionary<int, LastUsed> Paskutiniai = new Dictionary<int,LastUsed>();

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            

            DbHelper.ConstructHelper(Settings.Default.DbProviderName, Settings.Default.DbConnectionString);
            loadData();
            ImDoingNow = Operation.kuriamas_naujas;
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FormSelectTask());
        }

        internal static string ShortDate(DateTime date)
        {
            DateTimeFormatInfo Dtfi = CultureInfo.CreateSpecificCulture(Settings.Default.CultureName).DateTimeFormat;
            return date.ToString("d", Dtfi);
        }

        private static void loadData()
        {
            //List<Defektoskopas> mockDefektoskopai = new List<Defektoskopas>()
            //{
            //    new Defektoskopas("802", "RDM-2", "1363", 1997, 2),
            //    new Defektoskopas("803", "RDM-2", "067", 2000, 4),
            //    new Defektoskopas("811", "RDM-22", "0235", 2004, 5),
            //    new Defektoskopas("812", "RDM-22", "0154", 2001, 6),
            //    new Defektoskopas("821", "RDM-23", "08", 2012, 8)
            //};
            //Program.Defektoskopai = mockDefektoskopai;
            DbCommunicator.fetchDefektoskopai(Program.Defektoskopai);

            //List<DateTime> mockIseigines = new List<DateTime>()
            //{
            //    new DateTime(2012, 1, 1),
            //    new DateTime(2012, 1, 7),
            //    new DateTime(2012, 1, 8),
            //    new DateTime(2012, 1, 14),
            //    new DateTime(2012, 1, 15),
            //    new DateTime(2012, 1, 21),
            //    new DateTime(2012, 1, 22),
            //    new DateTime(2012, 1, 28),
            //    new DateTime(2012, 1, 29),
            //    new DateTime(2012, 1, 13)
            //};
            //Program.Iseigines = mockIseigines;
            // DbCommunicator.fetchIseigines(Program.Iseigines);


            //List<Linija> mockLinijos = new List<Linija>()
            //{
            //    new Linija("01", "Vilnius - Klaipėda", 1),
            //    new Linija("23", "Klaipėda - Pagėgiai", 2),
            //    new Linija("24", "Rimkai - Draugystė", 3),
            //    new Linija("17", "Radviliškis - Pagėgiai - v.s.", 5)
            //};
            // Program.Linijos = mockLinijos;
            DbCommunicator.fetchLinijos(Program.Linijos);

            //List<Meistrija> mockMeistrijos = new List<Meistrija>()
            //{
            //    new Meistrija("KM-1", "Pavenčių", 1, 1),
            //    new Meistrija("KM-2", "Tryškių", 1, 2),
            //    new Meistrija("KM-3", "Telšių", 1, 4),
            //    new Meistrija("KM-4", "Plungės", 1, 6),
            //    new Meistrija("KM-5", "Kūlupėnų", 1, 7),
            //    new Meistrija("KM-6", "Kretingos", 1, 9),
            //    new Meistrija("KM-8", "Klaipėdos", 1, 11),

            //    new Meistrija("KM-8", "Klaipėdos", 2, 11),
            //    new Meistrija("KM-9", "Rimkų", 2, 15),
            //    new Meistrija("KM-11", "Šilutės", 2, 19),
            //    new Meistrija("KM-12", "Pagėgių", 2, 20),

            //    new Meistrija("KM-9", "Rimkų", 3, 15),
            //    new Meistrija("KM-10", "Draugystės", 3, 18),

            //    new Meistrija("KM-12", "Pagėgių", 5, 20),
            //    new Meistrija("KM-13", "Tauragės", 5, 21),
            //    new Meistrija("KM-14", "Batakių", 5, 24),
            //    new Meistrija("KM-15", "Viduklės", 5, 1001)
            //};
            // Program.Meistrijos = mockMeistrijos;
            DbCommunicator.fetchMeistrijos(Program.Meistrijos);

            //List<Stotis> mockStotys = new List<Stotis>()
            //{
            //    new Stotis("Klaipėda", "52", 1, 11, 33),
            //    new Stotis("Pauostis", "51", 1, 11, 23),
            //    new Stotis("Giruliai", "50", 1, 9, 32),
            //    new Stotis("Kretinga", "49", 1, 9, 22),
            //    new Stotis("Kretingalė", "", 1, 9, 31),
            //    new Stotis("Kūlupėnai", "", 1, 7, 21),
            //    new Stotis("Šateikiai", "", 1, 7, 20),
            //    new Stotis("Plungė", "48", 1, 6, 10),
            //    new Stotis("Tarvainiai", "", 1, 6, 19),
            //    new Stotis("Lieplaukė", "", 1, 4, 9),
            //    new Stotis("Telšiai", "47", 1, 4, 18),
            //    new Stotis("Dūseikiai", "", 1, 2, 8),
            //    new Stotis("Tryškiai", "", 1, 2, 17),
            //    new Stotis("Raudėnai", "", 1, 1, 7),
            //    new Stotis("Pavenčiai", "46", 1, 1, 16),

            //    new Stotis("Klaipėda", "52", 2, 11, 6),
            //    new Stotis("Rimkai", "94", 2, 15, 15),
            //    new Stotis("Šilutė", "95", 2, 19, 5),
            //    new Stotis("Vilkyčiai", "", 2, 15, 14),
            //    new Stotis("Stoniškiai", "", 2, 19, 4),
            //    new Stotis("Pagėgiai", "87", 2, 20, 13),

            //    new Stotis("Viduklė", "", 5, 1001, 3),
            //    new Stotis("Tauragė", "86", 5, 21, 12),
            //    new Stotis("Pagėgiai", "87", 5, 20, 2),

            //    new Stotis("Rimkai", "94", 3, 15, 11),
            //    new Stotis("Draugystė", "96", 3, 18, 1)
            //};
            // Program.Stotys = mockStotys;
            DbCommunicator.fetchStotys(Program.Stotys);

            //List<Operatorius> mockOperatoriai = new List<Operatorius>()
            //{
            //    new Operatorius("401", "Zenius Leonavičius", 1),
            //    new Operatorius("402", "Juozas Vaitkus", 3),
            //    new Operatorius("416", "Židrunas Mikuta", 7),
            //    new Operatorius("415", "Vidmantas Prialgauskas", 15),
            //    new Operatorius("407", "Egidijus Butkus", 16),
            //    new Operatorius("410", "Vincas Motiejūnas", 19),
            //    new Operatorius("419", "Leonas Burkauskas", 17),
            //    new Operatorius("412", "Gedas Baziliauskas", 8),
            //    new Operatorius("406", "Rimantas Petrutis", 4),
            //    new Operatorius("418", "Ričardas Vaišys", 12),
            //    new Operatorius("421", "Arūnas Mikužis", 2),
            //    new Operatorius("422", "Žilvinas Butkus", 10),
            //    new Operatorius("424", "Giedrius Rubavičius", 11),
            //    new Operatorius("408", "Petras Šopa", 21)
            //};
            //Program.Operatoriai = mockOperatoriai;
            DbCommunicator.fetchOperatoriai(Program.Operatoriai);

            //List<KitasReikalas> mockKitiReikalai = new List<KitasReikalas>()
            //{
            //    new KitasReikalas("T", "Defektoskopo TA", 1),
            //    new KitasReikalas("R", "Defektoskopo remontas", 2),
            //    new KitasReikalas("K", "Akumuliatorių įkrovimas", 3),
            //    new KitasReikalas("P", "Defektoskopo pervežimas", 4),
            //    new KitasReikalas("M", "Techninis mokymas", 5),
            //    new KitasReikalas("A", "Ataskaitos diena", 6),
            //    new KitasReikalas("N", "Nedarbo diena", 7),
            //    new KitasReikalas("D", "Duomenų perdavimas", 8)
            //};
            //Program.KitiReikalai = mockKitiReikalai;
            DbCommunicator.fetchKitiReikalai(Program.KitiReikalai);
        }
    }
}
